import axios from 'axios'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://local.xiaonuo.tech:56110',  
  timeout: 10000, // 请求超时时间
  withCredentials: true, // 跨域请求时发送cookie
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 在发送请求前做些什么
    // 例如可以在这里添加token
    // if (store.getters.token) {
    //   config.headers['Authorization'] = `Bearer ${getToken()}`
    // }
    
    // 特殊处理获取隧道列表接口，确保返回JSON
    if (config.url.includes('/tunnel/getTunnel')) {
      config.headers['Accept'] = 'application/json';
    }
    
    return config
  },
  error => {
    // 处理请求错误
    console.error('请求错误:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    // 如果响应是HTML，说明可能遇到了问题
    if (typeof response.data === 'string' && response.data.includes('<!doctype html>')) {
      console.error('API返回了HTML而不是JSON数据，请检查API路径和配置');
      return Promise.reject(new Error('API返回格式错误'));
    }
    
    const res = response.data
    
    // 增加详细调试信息
    if (response.config && response.config.url && response.config.url.includes('/tunnel/getTunnel')) {
      // console.log('隧道API响应详情:', {
      //   url: response.config.url,
      //   status: response.status,
      //   headers: response.headers,
      //   data: response.data
      // });
      
      // 检查隧道数据的经纬度
      if (res && res.data && Array.isArray(res.data)) {
        res.data.forEach((tunnel, index) => {
          // console.log(`隧道${index} [${tunnel.mapName}] - 经纬度:`, tunnel.lng, tunnel.lat);
        });
      }
    }
    
    return res
  },
  error => {
    console.error('响应错误:', error)
    // 可以在这里根据不同的error.response.status统一处理不同的错误状态
    return Promise.reject(error)
  }
)

export default service 